不知不覺來到第30天的鐵人賽了,回首過去的29天,學習了很多Java的內容,有的是當初在學習Javascript和Typescript時就已經有接觸過程式語言共通的一些特性,有些則是這次學習Java才接觸到的內容。
坦白說當初一直很猶豫要不要參加,一來是公司另外一位工程師離職後,一直沒有接續的人員進來,導致工作變得非常忙碌,二來則是很擔心自己會半途而廢,再次成為~斷頭仔~(雖然之前也沒有真的寫任何內容XD)。
這次參加鐵人賽有幾個收穫:
markdown
語法和notion
的操作。來複習一下過去29天學習到的內容好了(騙騙字數):
java中的類型分為兩種:
基本數據類型(8種):byte
、short
、int
、long
、float
、double
、char
、boolean
。
引用類型:類(Classes)
、接口(Interfaces)
、陣列(Arrays)
、枚舉(Enums)
、記錄(Records)
、註解(Annotations)
。
java中的運算使用:+
、-
、*
、/
、%(取餘數)
進行數學運算;另外有++a
先運算後賦值、a++
先賦值後運算、--a
、a--
、+=a
、-=a
等方式。
if else
、if else if
、switch
的條件判斷式。
if(boolean) {
// dosomething
} else {
// dosomethin
}
if(boolean) {
// dosomething
} else if(boolean) {
// dosomethin
} else {
// dosomethin
}
switch(variable) {
case a:
// dosomething
break;
case b:
// dosomething
break;
default:
// dosomething
}
for
、while
、do while
的循環式,並且可以透過break
跳出循環式。
initial variable:初始值
end condition:循環結束條件
iterate:迭代(可以看成每執行完一次dosomething時,要進行的事情,避免陷入無限循環中)
for(initial variable; end condition; iterate) {
// dosomething
if(boolean) {
break;
}
}
--------------------------------------------
initial varibale
while(end condition) {
// dosomething
// iterate
}
--------------------------------------------
不論是否滿足結束條件都會先執行一次
initial varibale
do {
// dosomething
// iterate
} while(end condition)
[]
陣列:index索引
是從0
開始。length
,宣告時未給予長度的話,指向的會是null
。類
java中的頭號公民,基本上所有東西都是由class
組成可以使用public
、default(不寫任何的權限修飾)
在一般檔案中去進行類的定義。屬性
、靜態屬性
、方法
、靜態方法
、構造器
、初始化區塊
。overload重載
,重載
的重點是當參數個數不同
或參數類型不同
時,可以使用相同的名稱去定義方法,不會造成錯誤。方法
中使用方法本身
,某些情況下程式碼內容相較於循環式
更好寫,但是效能相對循環式
還差
,且在寫遞迴時要記得寫好結束條件(否則也會造成無限循環)。package
的位置,可以提供其他的類文件使用import
的方式使用(要記得權限問題)。權限
,只將必要的內容提供給其他的類使用,就是封裝性的一種體現,透過封裝可以更妥善的保護類中的內容,也可以提高程式碼的維護性,權限修飾由權限大至小共有public
->protected
->default(不寫任何權限)
->private
。constructor構造器
,可以透過constructor
的方式去實例化
類,並且將有定義好的值直接透過宣告物件直接賦值。class Person() {
//屬性
String name;
//構造器
public Person(String name) {
this.name = name;
}
}
public PersonTest {
public static void main(String[] args) {
Person person = new Person("Jay");
}
}
繼承
去使用被繼承
內所定義的屬性、方法、構造器等內容,並且還可以定義被繼承類中的方法,稱為override重寫
,繼承時使用extends
關鍵字。例如:class A extends B {}
。super class(被繼承的類
,但是是使用sub class(繼承的類)
的構造器去實例化這個物件,多態在使用上主要是方法
的部分,屬性是沒有多態關係的。static
時,代表該屬性或方法被定義成是靜態
的,所有的實例會共用同一組靜態屬性
或靜態方法
。final
代表這個屬性或方法是不能被重新賦值或重寫。abstract
關鍵字將類或方法定義為抽象的,當把類定義為抽象時,該抽象類是無法使用new xxx()
構造器進行實例化,且繼承了抽象類時,當抽象類中的方法有使用抽象定義時,必須將其重寫,否則也會變為抽象類。(抽象類著重在定義類中的情況而不是實際要做的事情)interface接口
是指一種標準或者是規範,有點類似抽象類和繼承的概念,接口裡面著重於定義還不是實際操作,使用implements
關鍵字去對接口進行實作。enum枚舉
指的是這個類有限定在整個java的程式中只能擁有特定的數量,而不可以新增其他的實例。annotation註解
指的是針對某個類或方法進行註解,通常比較多使用在框架。exception異常
指的是在程式碼編譯或是虛擬機在執行java的程式時,出現了不如預期的錯誤,這時候必須進行處理,又可以分為RuntimeExecption
(通常不處理,直接修改程式碼)和Exception
(編譯時出問題),需要進行特定的異常處理,可以使用try{} catch(Execption err) {} finally {}
或是throws
進行處理。上面大概就是這29天中,所有學習到的相關內容,某些部分有稍微的簡化(~不然太多了~),由於我所學習的資源(Youtube)其實才看了大約一半多一些,所以接下來我還會繼續的學習,並且持續在這邊進行更新(不確定鐵人賽可不可以再接續使用,不能的話就會發在個人發文那邊)。
總之很開心能夠完成30天的鐵人賽,接下來繼續加油和努力~~~~
掰掰:)